'''
数据类型
    基本数据类型
    数值
        整数(int) 浮点型(float) 复数(complex)  布尔(bool)
    字符串  (str)
    容器类型
        列表(list)  元祖(tuple) 集合(set ) 字典(dict)
    特殊类型
        None
'''
from operator import truediv

'''
该案例演示了数据类型
'''
# 如果数字比较大,可以用下划线显示效果,实际输出的结果不会变化
# num1= 1_00_00_00_00_00
# print(num1)


'''
type()  它可以查看对应的类型是什么
isinstance(num1,bool)  判断变量的类型
type和isinstance的区别
    type() 不会认为子类是一种父类类型
    isinstance() 会认为子类是一种父类类型
'''
# num1 = 10
# num2 = True
# print(num1)
# print(num2)
# print("-----------type()------------")
# print(type(num1))
# print(type(num2))
# print("------------isinstance()------------")
# print(isinstance(num1, int))        #   True
# print(isinstance(num2, bool))      #True
# print(type(num1) == type(num2) )  # False
# print(isinstance(num2, int)) #True

#---------------------
# 小整数池[-5,256]这个范围,这些整数提前创建好,且不会被垃圾回收,
# 避免了整数频繁的申请和销毁内存空间,不管在程序的什么位置,
# 使用的位于在这个范围的整数都是同一个对象
# ------------------------
num1 = 30
num2 = 30
# id() 获取变量值在内存中的地址
# print(id(num1))
# print(id(num2))


#---------------------
# 大整数池 一开始整数位空,每创建一个大整数就会向池中存储一个
# ------------------------


# ==========浮点数===============
# num1 = 0.1
# num2 = 0.2
# num3 = num1 + num2
# 注意在任何编程中，浮点数都存在丢失精度的情况
# print(num3)  #0.30000000000000004
# print(type(num3))
# 为了解决浮点数丢失精度的情况,可以借助python其他模块提供的功能
# from decimal import Decimal
# num1 = Decimal("0.1")
# num2 = Decimal("0.2")
# num3 = num1 + num2
# print(num3)

#-----------------布尔-------------------
# num1 = True
# num2 = False
# print(type(num1))
# print(type(num2))
#
# # bool 是 int的子类型，可以和整数进行运算
# print(num1 + 10)
# print(num2 + 10)
# #  == 比较运算符 判断== 左右两边的值是不是相等
# print(num1 == 1)
# print(num2 == 0)

# is 判断左右两边是否指向内存中的同一个地址
# print(num1 is 1)
# print(num2 is 0)

# 在python中 能够表示为假的值不仅仅是有False,还有 None, 0,0.0,所有空容器(空列表,空元祖,空集合,空字符串)

#----------------------------------字符串--------------------------------------
# 字符串的表现形式
# str1 = "holle"
# str2 =  'world'
# str3 = ("wel \
#         come")
# str4 = "hell'o w'orld"
# print(str4)

'''
    转义字符 
    \:在行尾作为续行符,
    \\: 反斜杠符号 加一个\的符号
    \':加一个单引号
    \":加一个双引号
    \b:退格
    \n:换行
    \r:将 ("hello \r wor") 得到的是 worlo, 将后面三个替换前面三个,前面剩下的在后面拼接
'''
str1 = ("hello \
        world")
print(str1)

str2 = ("hello \\ world")
print(str2)

str3 =("hello \' world")
print(str3)

str4 =("hello \" world")
print(str4)

str5 =("hello \b world")
print(str5)

str6 =("hello \n world")
print(str6)

str7 =("hello \t world")
print(str7)

str8 =("hello \r world")
print(str8)